package com.example.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 报名取消请求DTO
 * 用于取消讲座报名
 */
@Data
@Schema(description = "报名取消请求数据传输对象")
public class RegistrationCancelRequestDTO {

    @Schema(description = "用户ID", example = "1001")
    @NotNull(message = "用户ID不能为空")
    private Long userId;

    @Schema(description = "讲座ID", example = "2001")
    @NotNull(message = "讲座ID不能为空")
    private Long lectureId;

    @Schema(description = "操作人ID（管理员取消时需要）", example = "3001")
    private Long operatorId;

    @Schema(description = "取消原因（管理员取消时可选）", example = "用户违规")
    @Size(max = 500, message = "取消原因不能超过500个字符")
    private String reason;

    @Schema(description = "是否为管理员操作", example = "false")
    private Boolean isAdminOperation = false;
}